/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package atributos;

import exclusionmutua.Token;
import java.io.File;
import java.io.Serializable;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import net.jxta.protocol.PipeAdvertisement;

/**
 *
 * @author maldo
 */
public class Atributo implements Serializable {

    private String id;
    private String nombreCompleto;
    private String nombre;
    private String ext;
    private String tamanio;
    private String fechaModificacion;
    private String fechaCreacion;
    private String fechaAcceso;
    private String index;
    private String palabrasClave;
    private File myFile;
    private PipeAdvertisement pipe;
    private String nombrePeer;
    private Boolean token;
    private Token tokenCS;
    private int descargas;

    public Token getTokenCS() {
        return tokenCS;
    }

    public void setTokenCS(Token tokenCS) {
        this.tokenCS = tokenCS;
    }

    public Atributo  ( File archivo) throws IOException {
        myFile = archivo;
        id = String.valueOf(archivo.hashCode());
        nombreCompleto= archivo.getName();
        nombre= nombreCompleto.substring(0, nombreCompleto.lastIndexOf("."));
        ext= nombreCompleto.substring(nombreCompleto.lastIndexOf(".")+1);

        Path file = archivo.toPath();
        BasicFileAttributes attr= Files.readAttributes(file, BasicFileAttributes.class);

        tamanio= String.valueOf(attr.size());
        fechaCreacion= attr.creationTime().toString();
        fechaAcceso= attr.lastAccessTime().toString();
        fechaModificacion= attr.lastModifiedTime().toString();
        index = archivo.getAbsolutePath();
        palabrasClave="";
        }//fin del constructor

 public   Atributo() {
     super();
     id =  nombreCompleto = nombre = ext =  tamanio = fechaCreacion =
                fechaAcceso = fechaModificacion = index = palabrasClave="";
    }

    public void setPipe(PipeAdvertisement pipe) {
        this.pipe = pipe;
    }


    public File getMyFile() {
        return myFile;
    }
    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return the nombreCompleto
     */
    public String getNombreCompleto() {
        return nombreCompleto;
    }

    /**
     * @param nombreCompleto the nombreCompleto to set
     */
    public void setNombreCompleto(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the ext
     */
    public String getExt() {
        return ext;
    }

    /**
     * @param ext the ext to set
     */
    public void setExt(String ext) {
        this.ext = ext;
    }

    /**
     * @return the tamanio
     */
    public String getTamanio() {
        return tamanio;
    }

    /**
     * @param tamanio the tamanio to set
     */
    public void setTamanio(String tamanio) {
        this.tamanio = tamanio;
    }

    /**
     * @return the fechaModificacion
     */
    public String getFechaModificacion() {
        return fechaModificacion;
    }

    /**
     * @param fechaModificacion the fechaModificacion to set
     */
    public void setFechaModificacion(String fechaModificacion) {
        this.fechaModificacion = fechaModificacion;
    }

    /**
     * @return the fechaCreacion
     */
    public String getFechaCreacion() {
        return fechaCreacion;
    }

    /**
     * @param fechaCreacion the fechaCreacion to set
     */
    public void setFechaCreacion(String fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    /**
     * @return the fechaAcceso
     */
    public String getFechaAcceso() {
        return fechaAcceso;
    }

    /**
     * @param fechaAcceso the fechaAcceso to set
     */
    public void setFechaAcceso(String fechaAcceso) {
        this.fechaAcceso = fechaAcceso;
    }

    /**
     * @return the index
     */
    public String getIndex() {
        return index;
    }

    /**
     * @param index the index to set
     */
    public void setIndex(String index) {
        this.index = index;
    }

    /**
     * @return the palabrasClave
     */
    public String getPalabrasClave() {
        return palabrasClave;
    }

    /**
     * @param palabrasClave the palabrasClave to set
     */
    public void setPalabrasClave(String palabrasClave) {
        this.palabrasClave = palabrasClave;
    }

    @Override
    public String toString(){
        return getId() + ", " + getNombreCompleto() + ", " + getNombre()
                 + ", " + getExt() + ", " + getTamanio() + ", " + getFechaModificacion()
                  + ", " + getFechaCreacion() + ", " + getFechaAcceso()
                  + ", " +  getIndex()  + ", " + getPalabrasClave();
    }

    /**
     * @return the pipe
     */
    public PipeAdvertisement getPipe() {
        return pipe;
    }

    /**
     * @return the nombrePeer
     */
    public String getNombrePeer() {
        return nombrePeer;
    }

    /**
     * @param nombrePeer the nombrePeer to set
     */
    public void setNombrePeer(String nombrePeer) {
        this.nombrePeer = nombrePeer;
    }

    /**
     * @return the token
     */
    public Boolean getToken() {
        return token;
    }

    /**
     * @param token the token to set
     */
    public void setToken(Boolean token) {
        this.token = token;
    }

    /**
     * @return the descargas
     */
    public int getDescargas() {
        return descargas;
    }

    /**
     * @param descargas the descargas to set
     */
    public void setDescargas(int descargas) {
        this.descargas = descargas;
    }
    public void agregarDescarga()
    {
      this.descargas =  this.descargas +1;
    }
    
}


